2023/12/231418字符
ES5 严格模式
- 浏览器基于 es3.0 的 + es5.0 的新增方法使用的
- es3.0 和 es5.0 产生冲突的部分
- es5.0 严格模式 那么 es3.0 和 es5.0 产生冲突的部分就是用 es5.0 否则会用 es3.0
ES5.0 严格模式启动(不再兼容 es3.0 的一些不规则语法)
"use strict"; // 需要写在页面逻辑的最顶端
function test () {
console.log(arguments.callee); // es5 中没有 callee 属性
}
test(); //--> 报错
function test () {
console.log(test.caller); // es5 中没有 caller 属性
}
function demo () {
test();
}
demo();
with (document) { // es5 中没有 with 方法
write('a');
}
es5.0 语法规范
"use strict";
var a = b = 0; // b is not defined 变量赋值前必须声明
c = 0; // b is not defined
// 局部 this 必须被赋值(Person.call(null / undefined)) 赋值什么就是什么,拒绝重复属性和参数
function test () {
console.log(this);
}
test(); //--> undefined
new test(); //--> test{}
test.call({}); //--> Object{} 预编译时 this 不再指向 window
test.call(123); //--> 123
function test(name, name){ // es3 中可以写相同的参数
name = wang;
name = wang;
console.log(name);
}
test(1, 2); //--> 报错
var a = 123;
eval('console.log(a)'); //--> a eval() 将字符串当代码来用(改变作用域)